package org.liuqm.proxy.jdkproxy;


import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Proxy;


/**
 * 工厂
 */
public class JDKProxyFactory {

    /**
     * 创建类的代理实例
     * @param o
     * @return
     * @param <T>
     * @throws NoSuchMethodException
     * @throws InvocationTargetException
     * @throws InstantiationException
     * @throws IllegalAccessException
     */
    public static  <T> T createBuyer(Object o)  {
        //创建jdk代理对象
        JDkProxy jDkProxy = new JDkProxy(o);

        //创建代理类  生成一个具有目标对象功能的jdk代理类
        //1、第一个参数真实主题的类加载器
        //2、第二个参数真实主题的类实现的接口数组
        //3、动态代理类实例
        return (T) Proxy.newProxyInstance(o.getClass().getClassLoader(),
                o.getClass().getInterfaces(),jDkProxy);

    }

}
